import user.AdminUser;
import user.NormalUser;
import user.ProxyUser;
import user.User;
import user.factory.AdminUserFactory;
import user.factory.IUserFactory;
import user.factory.NormalUserFactory;

import java.util.Scanner;

//整个项目的启动位置
public class LibrarySystem {

    public static void main(String[] args) {
        IUserFactory adminUserFactory = new AdminUserFactory();
        User adminUser = adminUserFactory.createUser("刘备",1);



        IUserFactory normalUserFactory = new NormalUserFactory();
        User normalUser1 = normalUserFactory.createUser("关羽",2);
        User normalUser2 = normalUserFactory.createUser("张飞",3);


        ProxyUser proxyUserAdmin = new ProxyUser(adminUser);

        ProxyUser proxyUserNormalG = new ProxyUser(normalUser1);

        ProxyUser proxyUserNormalZ = new ProxyUser(normalUser2);


        ProxyUser currentUser = selectProxyRole(proxyUserAdmin,proxyUserNormalG,proxyUserNormalZ);

        while (true) {
            int choice = currentUser.getRealUser().display();
            //System.out.println(choice);

            currentUser.handleOperation(choice);
        }

    }

    public static ProxyUser selectProxyRole(ProxyUser proxyUserAdmin,ProxyUser proxyUserNormalG,ProxyUser proxyUserNormalZ) {
        System.out.println("选择角色进行登录：");
        System.out.println("1.管理员\n2.普通用户(关羽)\n3.普通用户(张飞)\n4.退出系统");

        ProxyUser currentUser = null;

        Scanner scanner = new Scanner(System.in);
        int choice = scanner.nextInt();

        switch (choice) {
            case 1:
                currentUser = proxyUserAdmin;
                break;
            case 2:
                currentUser = proxyUserNormalG;
                break;
            case 3:
                currentUser = proxyUserNormalZ;
                break;
            case 4:
                System.out.println("系统已退出..");
                System.exit(0);
                break;
        }
        return currentUser;
    }


    public static void main1(String[] args) {
        // 直接创建管理员用户
        User adminUser = new AdminUser("刘备", 1);
        // 直接创建普通用户
        User normalUser1 = new NormalUser("关羽", 2);

        User normalUser2 = new NormalUser("张飞", 3);

    }
}